Este ejemplo muestra como escribir un programa que localiza un objeto cuyo nombre es pasado como un argumento de la l�nea de comandos. Usa un proveedor de servicios para el sistema de ficheros. Por lo tanto el nombre que suministramos al programa debe ser un nombre de fichero. En este momento no necesitamos entender los detalles del proveedor de servicios.
�Importar las clases JNDI
Usando nuestro editor de texto favorito, creamos un fichero llamado Lookup.java.
Podemos importar el paquete completo o s�lo las clases individuales y los interfaces. El siguiente c�digo importa las clases usadas del paquete javax.naming:.
import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException;
�Crear un Contexto Inicial
En el m�todo main() del programa, creamos un contexto inicial.
Indicamos que estamos usando el proveedor de servicios del sistema de ficheros seleccionado el par�metro propiedades de entorno (representado por una clase Hashtable) al constructor de InitialContext, de esta forma.
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);
�Localizar un Objeto
Luego, usamos Context.lookup() para localizar un objeto. El siguiente c�digo localiza el objeto unido con el nombre suministrado en la l�nea de comandos.
Object obj = ctx.lookup(name);
�Capturar NamingException
La creacci�n del contexto inicial y el m�todo lookup() pueden lanzar una NamingException.
Por esta raz�n, nocesitamos encerrar estas llamadas dentro de un bloque try/catch.
Aqu� est� el fragmento de c�digo repetido con la clausula try/catch.
try {
// Create the initial context
Context ctx = new InitialContext(env);
// Look up an object
Object obj = ctx.lookup(name);
// Print it
System.out.println(name + " is bound to: " + obj);
} catch (NamingException e) {
System.err.println("Problem looking up " + name + ": " + e);
}
�Compilar el Programa
Luego, compilamos el fichero fuente usando el compilador Java. Para compilar el programa, debemos tener acceso a las clases JNDI. Si estamos usando el Java 2 SDK, v1.3, las clases JNDI ya estar�n incluidas. De otro modo, podemos incluir las clases configurando la variable CLASSPATH para que incluya el jndi.jar que habremos descargado desde la web site de JNDI o instalando jndi.jar como una extensi�n. Puedes ver la lecci�n Preparaciones� para los detalles sobre c�mo instalar las clases JNDI y los proveedores de servicios.
Si la compilaci�n tiene �xito, el compilador crear� un fichero lamado Lookup.class en el mismo directorio (o carpeta) en el que estaba el fichero fuente (Lookup.java).
Si la compilaci�n falla, debemos asegurarnos de haber tecleado el nombre del programa exactamente como se muestra aqu�, usando las mismas letras en may�sculas. Si todav�a sigue fallando podemos ver la lecci�n Problemas comunes para m�s ayuda.
�Ejecutar el Programa
Para ejecutar el programa, necesitamos acceso a las clases JNDI, al proveedor de servicios del sistema de ficheros y a nuestro fichero de ejemplo (Lookup.class).
Ver el paso de compilaci�n para las instrucciones de como incluir el acceso a las clases JNDI. Para incluir las clases del proveedor de servicios del sistema de ficheros (fscontext.jar y providerutil.jar), o las incluimos en nuestra variable CLASSPATH o las instalamos como extensiones. Observa que estos ficheros no est�n incluidos con el Java 2 SDK, v1.3. Puedes ver la lecci�n Preparaciones para los detalles sobre c�mo instalar las clases JNDI y los proveedores de servicios. Finalmente, incluimos el directorio que contiene nuestro fichero Lookup.class en nuestra variable CLASSPATH.
Para ejecutar el programa, suministramos el nombre de un fichero de nuestro sistema de ficheros de esta forma.
# java Lookup /tmp
O de esta otra.
# java Lookup \autoexec.bat
Si sumistramos un directorio de ficheros, veremos algo como esto.
# java Lookup /tmp /tmp is bound to: com.sun.jndi.fscontext.RefFSContext@1dae083f
Si el nombre que hemos suministrado es un fichero, veremos algo como esto.
/tmp/f is bound to: //tmp/f
Si tenemos alg�n problema al ejecutar este ejemplo, debemos ver la p�gina Problemas Comunes.